<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guideline: 接口</title>
<meta name="uma.type" content="Guideline">
<meta name="uma.name" content="interface">
<meta name="uma.presentationName" content="接口">
<meta name="element_type" content="other">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="3.6682388132488183E-305"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Guideline: 接口</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/guidance.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">接口用来表示系统的用户视图并隐藏它的实现。本指南建议使用一组规则来控制接口规约。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../rup/domains/analysis_and_design_BD3BBB1D.html" guid="_kjFBYN7HEdm8G6yT7-Wdqw">分析与设计</a>
</li>
<li>
<a href="./../../../rup/roles/rup_capsule_designer_F3E66EDF.html" guid="{86253FE7-0036-4D14-8BD7-C18CE86A5E14}">封装体设计员</a>
</li>
<li>
<a href="./../../../rup/workproducts/rup_interface_9816B54F.html" guid="{C6938487-1DAA-4F6A-B3BC-CB99165F0680}">接口</a>
</li>
<li>
<a href="./../../../rup/roles/rup_designer_BA8DE74E.html" guid="{DB21F5EF-810B-4994-B120-79FA8774FA9D}">设计人员</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="Topics" name="Topics"></a> 
<h3>
    <a key="接口（interface）" text="命名" name="XE_interface__naming" id="XE_interface__naming" class="index"></a><a id="Naming Interfaces" name="Naming Interfaces">命名接口</a> <a href="#Topics"><img height="20" alt="回到页首"     src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h3>
<ul>
    <li>
        命名接口，以反映它在系统中担当的角色。
    </li>
    <li>
        名称应简短，1 到 2 个单词。
    </li>
    <li>
        名称中不要包含“<b>interface</b>”一词；它通过模型元素的类型（例如 <b>interface</b>）来暗示
    </li>
</ul>
<h3>
    <a key="接口（interface）" text="描述" name="XE_interface__describing" id="XE_interface__describing" class="index"></a><a id="Describing Interfaces" name="Describing Interfaces">描述接口</a> <a href="#Topics"><img height="20" alt="回到页首"     src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h3>
<ul>
    <li>
        描述应表达接口的职责。
    </li>
    <li>
        描述的长度应是几句话，最长可为一小段。
    </li>
    <li>
        描述不应只是重述一遍接口的名称，而应说明接口在系统中担当的角色。
    </li>
</ul>
<h3>
    <a key="接口（interface）" text="定义操作" name="XE_interface__defining_operations" id="XE_interface__defining_operations" class="index"></a><a id="Defining Operations" name="Defining Operations">定义操作</a> <a href="#Topics"><img height="20"     alt="回到页首" src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h3>
<ul>
    <li>
        操作名称应反映操作的结果。
    </li>
    <li>
        当操作<b>设置</b>或<b>获取</b>信息时，在操作的名称中包含 <b>set</b> 或 <b>get</b>
        就多余了。应对操作和正被设置或检索的模型元素的属性赋予相同的名称。这样命名的操作，如果不带参数，则检索属性；这样命名的操作，如果<b>带</b>参数，则<b>设置</b>属性。
    </li>
</ul>
<p class="exampleheading">
    示例
</p>
<p class="example">
    <b>name()</b> 返回对象的名称；<b>name(aString)</b> 将对象的名称设置为 <b>aString</b>。
</p>
<ul>
    <li>
        操作的描述应说明操作要<b>做什么</b>，包括所有主要算法以及它返回<b>何值</b>。
    </li>
    <li>
        操作参数的命名应指示正将何种信息传递给操作。
    </li>
    <li>
        确定参数的<b>类型</b>。
    </li>
</ul>
<h3>
    <a key="接口（interface）" text="记录" name="XE_interface__documenting" id="XE_interface__documenting" class="index"></a><a id="Documenting Interfaces" name="Documenting Interfaces">记录接口</a> <a href="#Topics"><img height="20" alt="回到页首"     src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h3>
<p>
    由接口定义的行为被指定为一组操作。可能需要传达附加信息：
</p>
<ul>
    <li>
        如何使用操作，以及这些操作的执行顺序（用示例时序图说明）。
    </li>
    <li>
        实现该接口的模型元素可能所处的、外部可观察到的可能状态（通过状态机说明，请参阅<a class="elementLinkWithType" href="./../../../rup/guidances/guidelines/statechart_diagram_640B5D0B.html" guid="1.4528459404144188E-304">Guideline: 状态表图</a>）。
    </li>
    <li>
        测试计划和脚本，它们测试任何实现该接口的模型元素的行为。
    </li>
</ul>
<p>
    为了对这些信息进行分组和管理，应创建一个包来包含该接口和所有相关工作产品。
</p>
<h3>
    <a id="Hints and Tips" name="Hints and Tips">提示与技巧</a> <a href="#Topics"><img height="20" alt="回到页首"     src="./../../../rup/resources/top.gif" width="26" border="0" /></a>
</h3>
<p>
    每个接口代表系统中的一条“接缝”：系统可以在该处“分开”并重新构建或重新设计。接口代表了规约与设计或实现的分离。 构造良好的接口应：
</p>
<ul>
    <li>
        简单却又完整，提供所有必要的操作，却又足以指定单项服务
    </li>
    <li>
        可理解，提供的信息足以使用和实现接口，而不必检查现有用法或实现
    </li>
    <li>
        易使用，提供信息以指导用户利用接口的主要属性，而不需要深入了解操作的细节
    </li>
</ul>
<p>
    当您绘制接口时，
</p>
<ul>
    <li>
        只要需要简单地指出系统中存在接缝，就可使用“棒棒糖”符号表示法。 最常见的情况是，您需要将此用于子系统而不是用于类。
    </li>
    <li>
        在您需要表示服务本身的详细信息时，使用扩展的“类”表示法。最常见的情况是，您需要将此用于指定包或子系统提供的服务。
    </li>
</ul><br />
<br /></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
